package com.gjzhao.fmmall.service.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description: 主从模式下Redisson连接客户端初始化
 * @Author: gjzhao
 * @Date Created in 2022-01-30 12:17 下午
 */
@Configuration
public class RedissonMasterAndSlaveConfig {


    /** 主库连接地址 */
    @Value("${redisson.addr.masterAndSlave.masterhost}")
    private String masterhost;

    /** 从库连接地址(这里使用一主两从方式，所以从库地址是两个以','分开) */
    @Value("${redisson.addr.masterAndSlave.slavehosts}")
    private String slavehosts;

    /** redis密码 */
    @Value("${redisson.addr.masterAndSlave.password}")
    private String password;

    /** 数据库选择 */
    @Value("${redisson.addr.masterAndSlave.database}")
    private int database;


    //构建主从模式下，redisson客户端对象
    @Bean
    public RedissonClient getMasterAndSlaveClient() {

        Config config = new Config();

        config.useMasterSlaveServers() //使用主从模式
              .setMasterAddress(masterhost)
              .addSlaveAddress(slavehosts.split("[,]"))
              .setPassword(password)
              .setDatabase(database)
              .setMasterConnectionPoolSize(10000)
              .setSlaveConnectionPoolSize(10000);

        return Redisson.create(config);

    }

}
